package org.record.mood.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * @description:json工具类
 * @author: sunyw
 * @time: 2020-02-27 12:02
 */
public class JsonUtils {
    public static String tojson(Object object) {
        return JSON.toJSONString(object);
    }

    public static <T> T jsonToobject(String json, Class<T> clazz) {
        return JSON.parseObject(json, clazz);
    }

    public static Map<String, Object> objectTomap(Object object) {
        return (Map) JSON.parseObject(tojson(object), Map.class);
    }

    public static <T> T mapTobean(Map<?, ?> map, Class<T> clazz) {
        return JSON.parseObject(JSON.toJSONString(map), clazz);
    }

    public static <T> T ObjectCopyObject(Object obj, Class<T> clazz) {
        return JSON.parseObject(JSON.toJSONString(obj), clazz);
    }

    public static String mapTOjson(Map<?, ?> mapTxn) {
        return StringUtils.isEmptyMap(mapTxn) ? null : tojson(mapTxn);
    }

    public static String listTOjson(List<?> list) {
        return StringUtils.isEmptyList(list) ? null : tojson(list);
    }

    public static List  jsonTOlist(String json) {
        return StringUtils.isEmpty(json) ? null : (List)jsonToobject(json, List.class);
    }

    public static <T> List<T> jsonTOlist(String json, Class<T> clazz) {
        return StringUtils.isEmpty(json) ? null : JSONObject.parseArray(json, clazz);
    }

    public static Map<?, ?> jsonTOmap(String json) {
        return StringUtils.isEmpty(json) ? null : (Map)jsonToobject(json, Map.class);
    }
    private static void addIndentBlank(StringBuilder sb, int indent) {
        for(int i = 0; i < indent; ++i) {
            sb.append('\t');
        }

    }
}
